home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / VBDIALOG.PAK / VBDIALOG.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  125 lines

  1. // Borland C++ - (C) Copyright 1993 by Borland International
  2. //
  3. //  Windows VBX Example - C/C++ Version
  4. //
  5. #include <windows.h>
  6. #include <windowsx.h>
  7. #pragma hdrstop
  8. #include <bivbx.h>
  9. #include "vbdialog.h"
  10.  
  11. // some useful macros for working with VBX controls
  12. #define VBXGetDlgItem(w,i)          VBXGetHctl(GetDlgItem(w,i))
  13.  
  14.  
  15. static HINSTANCE hInst;
  16.  
  17. void SamplesEvent( VBXEVENT FAR * lpEvent )
  18. {
  19.   LONG val;
  20.   switch( lpEvent->ID )
  21.   {
  22.     case IDC_BIPICT3:
  23.       if( ! lstrcmpi( lpEvent->EventName, "DragDrop" ) )
  24.     if( VBXGetPropByName(VBX_EVENTARGNUM(lpEvent,HCTL,0),"Picture",&val) )
  25.       VBXSetPropByName( lpEvent->Control, "Picture", val );
  26.       break;
  27.     case IDC_BIPICT1:
  28.     case IDC_BIPICT2:
  29.       if( ! lstrcmpi( lpEvent->EventName, "DragDrop" ) )
  30.     MessageBeep(0);
  31.       break;
  32.   }
  33. }
  34.  
  35. void SamplesTimer( HWND hWnd, int iSwitch, int iGauge )
  36. {
  37.   HCTL hCtlSwitch = VBXGetDlgItem(hWnd,iSwitch);
  38.   HCTL hCtlGauge  = VBXGetDlgItem(hWnd,iGauge);
  39.  
  40.   LONG on  = 0;
  41.   LONG val = 0;
  42.  
  43.   if( VBXGetPropByName( hCtlSwitch, "On", &on ) && on )
  44.     if( VBXGetPropByName( hCtlGauge, "Value", &val ) )
  45.       VBXSetPropByName( hCtlGauge, "Value", (LONG) ( val + 5 ) % 100 );
  46. }
  47.  
  48. LONG FAR PASCAL SamplesDialog
  49. (
  50. HWND hWnd,
  51. WORD wMsg,
  52. WORD wParam,
  53. LONG lParam
  54. )
  55. {
  56.   // process the message
  57.   switch( wMsg )
  58.   {
  59.     // process command from one of the child controls
  60.     case WM_COMMAND:
  61.       switch( GET_WM_COMMAND_ID(wParam,lParam) )
  62.       {
  63.     // ok or cancel, so end the dialog
  64.     case IDOK:
  65.     case IDCANCEL:
  66.       EndDialog( hWnd, 0 );
  67.       break;
  68.       }
  69.       break;
  70.  
  71.     // process VBX event
  72.     case WM_VBXFIREEVENT:
  73.       SamplesEvent( (VBXEVENT FAR *)lParam );
  74.       break;
  75.       
  76.     // initialize the dialog
  77.     case WM_INITDIALOG:
  78.       VBXInitDialog( hWnd, hInst, "Samples" );
  79.       SetTimer( hWnd, 0, 0, 0 );
  80.       return FALSE;
  81.  
  82.     // timer tick
  83.     case WM_TIMER:
  84.       SamplesTimer( hWnd, IDC_BISWITCH1, IDC_BIGAUGE1 );
  85.       SamplesTimer( hWnd, IDC_BISWITCH2, IDC_BIGAUGE2 );
  86.       SamplesTimer( hWnd, IDC_BISWITCH3, IDC_BIGAUGE3 );
  87.       SamplesTimer( hWnd, IDC_BISWITCH4, IDC_BIGAUGE4 );
  88.       break;
  89.   }
  90.   return FALSE;
  91. }
  92.  
  93. // Turn off warning: Parameter * is never used in function WinMain...
  94. #pragma argsused
  95.  
  96. int PASCAL WinMain
  97. (
  98. HINSTANCE hInstance,
  99. HINSTANCE hPrevInstance,
  100. LPSTR     lpszCmdLine,
  101. int       nCmdShow
  102. )
  103. {
  104.   // save the instance
  105.   hInst = hInstance;
  106.  
  107.   // initialize the VBX library
  108.   if( ! VBXInit( hInstance, "Thunder" ) )
  109.   {
  110.     MessageBox( NULL, "Can't init VBX library!\n", NULL, MB_OK | MB_APPLMODAL );
  111.     return 0;
  112.   }
  113.   
  114.   // load the samples dialog box
  115.   if( DialogBox( hInstance, "Samples", NULL, (FARPROC)SamplesDialog ) == -1 )
  116.     MessageBox( NULL, "Can't load dialog box!\n", NULL, MB_OK | MB_APPLMODAL );
  117.  
  118.   // terminate the VBX library
  119.   VBXTerm();
  120.   
  121.   // end of program
  122.   return 0;
  123. }
  124.  
  125.